package com.yc.thread.interrupte;

/**
 *参考：https://blog.csdn.net/qq_39682377/article/details/81449451
 */
public class InterruptAndInterrupted {
	
	public void m() {
		Thread t = new Thread(() -> {
			for (int i = 0; i < 200; i++) {
				System.out.println(i);
				//测试是否有中断消息，并且清除中断标记。（注意这是个静态方法，作用于当前所属线程，不要用对象调用）
				if (!Thread.interrupted()) {
					System.out.println(i);
				} else {
					System.out.println("收到线程中断消息，结束线程");
					break;
				}
			}
		}, "T1");
		
		t.start();
		try {
			Thread.sleep(2);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		t.interrupt();//中断（只是“标记”线程为中断，是一种线程通信机制，线程是否真的停止，只能由线程自己决定）
		//false。因为线程里已经执行了Thread.interrupted()，中断标记已经被清除，所以是false
		System.out.println("t.isInterrupted() : " + t.isInterrupted());
		
	}

	public static void main(String[] args) {
		InterruptAndInterrupted ta = new InterruptAndInterrupted();
		ta.m();
	}

}
